#pragma once
#include "ZMCutBase.h"

class ZMTriCutTri
{

public:
	ZMTriCutTri(PTreeTri p1, PTreeTri p2, ZMVector<ZMTriangle>::iterator begin1, ZMVector<ZMTriangle>::iterator begin2);
	ZMTriCutTri(const ZMVector<ZMPoint3D>& vPnt1, const ZMVector<int>& vInx1, const ZMVector<ZMPoint3D>& vPnt2, const ZMVector<int>& vInx2);
	~ZMTriCutTri();
	void CalCut(ZMVector<ZMCutInfo>& cutInfo1, ZMVector<ZMCutInfo>& cutInfo2);
protected:
	ZMVector<ZMTriangle>::iterator GetTriBegin(int iTriInx)
	{
		if (m_vTri[iTriInx].empty())
		{
			return m_begin[iTriInx];
		}
		return m_vTri[iTriInx].begin();
	}

private:
	ZMVector<ZMTriangle> m_vTri[2];
	ZMVector<ZMTriangle>::iterator m_begin[2];
	PTreeTri m_pTree[2];
#ifdef DEBUG_INTER
	vector<vector<int>> m_vIntersectionData;
#endif

};

